package mlz.work;

import java.util.Random;

/*
## 需求2：开发验证码
开发一个程序，可以生成指定位数的验证码，每位可以是数字、大小写字母。

需求分析：
1.方法是否需要接收数据处理?
    需要,一个参数用来表示验证码的位数

2.方法是否需要返回值?
    需要,返回值就是生成的验证码

3.方法内部的业务处理
    a.先按照方法接收的验证码位数n位,循环n次
    b.每次循环,都产生一个字符,字符可以是数字、大小写字母 -> 随机生成
    c.定义字符串类型的变量用于记录生成的每位的随机字符
 */
public class WorkDemo02 {
    public static void main(String[] args) {
        String code = createCode(8);
        System.out.println(code);//Pk8GWKU5 /pu4v2NaZ
    }

    public static String createCode(int n){
        //随机生成字符 -> 获取随机数对象
        Random r = new Random();
        //3.定义字符串类型的变量用于记录生成的每位的随机字符
        String code = ""; // 8azA
        //1.先按照方法接收的验证码位数n位,循环n次
        for (int i = 1; i <= n; i++) {
            //2.每次循环,都产生一个字符,字符可以是数字、大小写字母 -> 随机生成
            //思路:随机一个数字 0 1 2,然后 0表示数字, 1表示大写字母 2表示小写字母
            int type = r.nextInt(3); // 0 ~ 1
            switch(type){
                case 0:
                    //随机一个数字字符
                    code += r.nextInt(10); //code = code + 8
                    break;
                case 1:
                    //随机生成大写字母 A -> 65
                    char ch1 = (char)(r.nextInt(26) +  65);
                    code += ch1;
                    break;
                case 2:
                    //随机生成小写字母 a -> 97
                    char ch2 = (char)(r.nextInt(26) + 97);
                    code += ch2;
                    break;

            }
        }
        return code;
    }












}
